package iterable_0929;
/**
 * 两个接口：
 * 1.Iterator 迭代器
 * hasNext() 返回boolean 还有没有下一个元素
 * next 返回元素类型  取下一个元素
 *
 * 2.Iterable  具备迭代能力
 * iterator()  返回Iterable  获取迭代器，返回值是一个迭代器
 *
 *3. Collection接口继承Iterable接口,所有的Collection都可以Iterable的,并没有规定元素是怎么组织起来的，但都具备一些公共特征。
 * 例如：添加元素、取出元素、元素是否存在，都具备迭代的能力
 * Collection：
 * 方法名 返回值 用途
 * size() int元素个数
 * isEmpty() boolean集合是否为空
 * contains(Object) boolean 元素是否在集合中
 * add(E) boolean 添加元素
 * remove(Object) boolean 移除元素
 * clear() void 清空集合
 * equals(Object) boolean 元素是否相等
 * containsAll(Collection</?>) boolean
 * addAll(Collection</?>) boolean
 */

import java.util.ArrayList;
public class MyCollection {
    public static void main(String[] args) {
//        ArrayList arrayList=new ArrayList();
//        arrayList.add(1);//添加元素
//        arrayList.add(2);
//        //向上转型
//        List list=arrayList;
//        Collection collection=arrayList;//Collection容器接口
//        Iterable iterable=arrayList;//具备迭代能力Iterable接口
//        Iterator it=iterable.iterator();//迭代器接口
//        //next()的调用应该发生在hasNext()返回true之后
//        while(it.hasNext()){
//            //走到这里说明it.hasNext是true
//            Object next=it.next();
//            System.out.println(next);

        java.util.Collection collection=new ArrayList();
        System.out.println(collection.size());//0
        System.out.println(collection.isEmpty());//true
        collection.add(1);
        collection.add(2);
        collection.add(4);
        System.out.println(collection.remove(2));//true
        System.out.println(collection);//可以直接打印[1,4]
        java.util.Collection collection1=new ArrayList();
        collection1.add(1);
        collection1.add(2);
        collection1.add(3);
        java.util.Collection collection2=new ArrayList();
        collection2.add(1);
        collection2.add(2);
        System.out.println(collection1.containsAll(collection2));//true
        System.out.println(collection1);//[1,2,3]
        System.out.println(collection2);//[1,2]
        System.out.println(collection1.equals(1));//false
        System.out.println(collection1.equals(collection2));//false
        collection2.add(3);
        System.out.println(collection1.equals(collection2));//true
        System.out.println(collection.removeAll(collection2));//true
        System.out.println(collection);//[4]
    }
}
